home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Interactive 7
/
PC World Interactive 7.iso
/
program
/
cprog.EXE
/
VESA2.TXT
< prev
next >
Wrap
Text File
|
1995-09-23
|
6KB
|
99 lines
┌──────────────────────────────────────────────────────────────────────────┐
│┌────────────────────────────────────────────────────────────────────────┐│
││ ││
││ Yuvarlak Köƒe ■ VESA kartlarì II ││
││ ││
│└────────────────────────────────────────────────────────────────────────┘│
│ PS 26 · Eylül'95 Alex PAMIR │
└──────────────────────────────────────────────────────────────────────────┘
ÿyi günler sevgili Yuvarlak Köƒe okurlarì. Alemin en matrak
köƒelerinden biri olan yuvarlak köƒe bu ay da sizlerle.
Bu ay geçen aydan kalan VESA konusunu incelemeye devam edeceºiz.
Geçen ay gördüºümüz kadarìyla artìk bilgisayarìmìzdaki Super VGA
kartìnìn VESA uyumunu ve desteklediºi modlarì tesbit etmeyi öºrendik.
Bu ay da bu modlarda ekrana nasìl eriƒeceºimizi örnekli bir ƒekilde
göreceºiz. Listemizdeki ekran modlarìndan istediºimiz birini seçtiºimizde,
ekranì bu mod'da açmadan önce kontrol etmemiz gereken bir nokta daha var.
Bu da monitörümüzün bu ekran modunu gösterip göstermeyeceºidir.
Aslìnda bunu bilgisayarì alìrken satìcìnìn bize verdiºi bilgiden yahut
monitörün kullanìm kìlavuzundan öºrenebiliriz ama bu bilgilere ben pek
güvenmem. Bunu yazìlìm olarak anlamanìn yolu ise programìmìzdaki
modbuf.modeflag baytìnìn diºer bir bitini kontrol etmekle olur (0.bit).
Bu kontrol yapìldìktan sonra VESA BIOS'unun 02H numaralì fonksiyonunu
çaºìrarak istediºimiz modda ekranì açabiliriz.
┌──────────────────────────────────────────────────────────────────────╖
│ Interrupt 10h Function 4Fh ║
│ ║
│ AH : 4Fh ║
│ AL : 02h ║
│ BX : istenen modun numarasì (15. biti 1 olursa Video RAM'de ║
│ eskiden bulunan grafik datasì silinmez) ║
╘══════════════════════════════════════════════════════════════════════╝
Modu açtìktan sonra mutlaka bunu test etmemiz gerekir. Bunu da ya interrupt
dönüƒü AH'a ve AL'a bakarak yapabiliriz, ki AH'da 00h ve AL'da 4Fh varsa
tamam demektir; veya VESA BIOS'un 03h numaralì fonksiyonunu kullarak
ekranìn ƒu anki modunu öºrenip bizim istediºimizle karƒìlaƒtìrìrìz.
03h fonksiyonu ƒöyledir:
┌────────────────────────────────────────────────────────────────────────╖
│ Interrupt 10h Function 4Fh ║
│ AH : 4Fh ║
│ AL : 03h ║
│ ║
│ Dönüƒte: ║
│ BX : istenen modun numarasì ║
│ ║
╘════════════════════════════════════════════════════════════════════════╝
Modumuz artìk hazìr olduºuna göre artìk tek yapmamìz gereken ekran
hafìzasìna bilgi yazìp bunu ekranda görmek. Fakat kazìn ayaºi... pardon
VESA'nìn hafìzasì öyle deºil. Bildiºiniz gibi SVGA kartlarìnìn 2MB, 4MB
gibi 256 KB 'dan daha büyük hafìzalarì olabiliyor. Fakat bizim hafìzada
ekranì adresleyebildiºimiz bölge sadece A000:0000'dan B000:0000'a kadar olan
64KB'lìk bölge. Ekran büyüklüºü 64KB'dan az hafìza gerektiren modlar için
fazla bir sorun yok. En fazla sayfa deºiƒtirme problemi çìkabilir. Fakat
640x480x256 gibi büyük modlar için biz ne yapacaºìz. Bunun çözümü, bizim
64KB'lìk bölgeyi ekran hafìzasìna karƒìlìklì iliƒkilendirmek. Böylece biz
bilgisayara, ben kendi hafìza bölgemi ekran hafìzasìnìn ƒu ƒu bölgesi
olarak kullanmak istiyorum dedikten sonra o bölgeyi kullanmakla sorun
hallediliyor. Buna "page framing" adì veriliyor ve özellikle EMS hafìza
adreslemesinde kullanìlìyor. Bu sistemin tek dezavantajì tek komutta en
fazla çerçevemiz kadar bilgi gönderebilmemiz. Bu yüzden 64K'dan büyük
ekranlar ancak birkaç seferde çizilebiliyor. VESA'da bu çerçeveye "Access
window" yani eriƒim penceresi deniyor. Bu eriƒim penceresini kullanmak
için ise 05h numaralì alt fonksiyon kullanìlìyor. Kullanìmdaki bir önemli
özellik de pencerenin hareket oranì. Bu oranìn katlarì olarak belirlenen
adres deºiƒikliºiyle pencerenin Video RAM'daki yeri belirleniyor.
Yani eºer oran 1K ise DX registerìna konulan 128 deºeri ekran hafìzasìnìn
128K'dan baƒlamasì gerektiºi anlamìna geliyor. Bir de bazì kartlarda iki
eriƒim penceresi olabiliyor; biri yazmak diºeri okumak için. O an yapìlacak
iƒleme göre o numaralì pencerenin yerinin deºiƒmesi gerekir. Hangi
pencerenin ne iƒe yaradìºì da o pencerenin pencere bilgileri word'ünün
bitlerine bakìlarak anlaƒìlìr. 0. bit, pencerenin olup olmadìºìnì (1= var),
1. bit okunabilir olup olmadìºìnì (1=okunabilir), 2. bit yazìlabilir olup
olmadìºìnì (1=yazìlabilir) gösterir. Deºerler ƒöyle:
┌──────────────────────────────────────────────────────────────────────────╖
│ ║
│ Interrupt 10h Function 4Fh ║
│ ║
│ AH : 4Fh ║
│ AL : 05h ║
│ BH : 00h ║
│ BL : eriƒim penceresi numarasì (0 veya 1) ║
│ DX : eriƒim bölgesi adresi (hareket orani ile çarìlìp asìl degeri ║
│ oluƒturur) ║
╘══════════════════════════════════════════════════════════════════════════╝
Elimizdeki bu bilgilerle VESA modundaki bir SVGA karta nasìl eriƒim
yapìlacaºìnì geçen ayki örneºin geliƒtirilmiƒi olan bu ayki örnekte
görebilirsiniz.
Gelecek ay buluƒuncaya kadar size iyi programlamalar.